package util.expression;

/**
 * 함수를 표현하는 클래스
 */
public class Function extends Expression
{
	protected Expression[] expressions; // 함수를 구성하는 항

	/**
	 * 생성자
	 * @param expressions : 함수를 구성하는 항
	 */
	public Function(Expression... expressions)
	{
		this.expressions = expressions;
	}

	/**
	 * 함수를 구성하는 항을 가져오는 메서드
	 * @return : 함수를 구성하는 항
	 */
	public Expression[] getExpressions()
	{
		return expressions;
	}

	/**
	 * 함수에 값을 대입하여 결과값을 얻는 메서드
	 * @param x : 함수에 대입할 값
	 * @return : 결과값
	 */
	@Override
	public double getValue(double x)
	{
		double result = 0;

		for (Expression i : expressions)
			result += i.getValue(x);

		return result;
	}
}